import SwiftUI

//struct AnimationGradientView: View {
//    var letters: String // 要偏移的字母
//    var offsetAmount: CGFloat // 偏移量
//    var delayBetweenAnimations: Double // 每个字符之间的动画延迟
//    var animationDuration: Double // 每个字母的动画持续时间
//    var shouldLoop: Bool // 是否循环动画
//    var changeColorDuringAnimation: Bool // 动画期间是否变化颜色
//    var colors: [Color] // 变化的颜色数组
//    var useDifferentColors: Bool // 是否为每个字符使用不同的颜色
//
//    @State private var offsets: [CGFloat] // 用于跟踪每个字母的偏移量
//    @State private var currentColors: [Color] // 当前显示的颜色
//
//    // 添加所有默认值
//    init(
//        letters: String = "abcdefgh",
//        offsetAmount: CGFloat = 30,
//        delayBetweenAnimations: Double = 0.2,
//        animationDuration: Double = 0.5,
//        shouldLoop: Bool = true,
//        changeColorDuringAnimation: Bool = true,
//        colors: [Color] = [.red, .green, .blue, .orange, .purple],
//        useDifferentColors: Bool = true
//    ) {
//        self.letters = letters
//        self.offsetAmount = offsetAmount
//        self.delayBetweenAnimations = delayBetweenAnimations
//        self.animationDuration = animationDuration
//        self.shouldLoop = shouldLoop
//        self.changeColorDuringAnimation = changeColorDuringAnimation
//        self.colors = colors
//        self.useDifferentColors = useDifferentColors
//        self._offsets = State(initialValue: Array(repeating: 0, count: letters.count))
//        self._currentColors = State(initialValue: Array(repeating: colors.first ?? .black, count: letters.count))
//    }
//
//    var body: some View {
//        VStack {
//            HStack {
//                ForEach(0..<letters.count, id: \.self) { index in
//                    Text(String(letters[letters.index(letters.startIndex, offsetBy: index)]))
//                        .font(.largeTitle)
//                        .offset(y: offsets[index])
//                        .foregroundColor(currentColors[index]) // 使用当前颜色
//                }
//            }
//            .onAppear {
//                startAnimation()
//            }
//            
//            Button(action: {
//                resetAnimation()
//            }) {
//                Text("重新开始动画")
//                    .padding()
//                    .background(Color.blue)
//                    .foregroundColor(.white)
//                    .cornerRadius(8)
//            }
//        }
//    }
//
//    private func startAnimation() {
//        for index in offsets.indices {
//            let delay = delayBetweenAnimations * Double(index) // 计算每个字母的延迟
//            
//            // 设置颜色变化的动画
//            if changeColorDuringAnimation {
//                let colorChangeInterval = animationDuration / Double(colors.count) // 计算颜色变化的间隔
//                
//                // 在动画过程中多次切换颜色
//                for colorIndex in 0..<colors.count {
//                    let colorChangeDelay = delay + colorChangeInterval * Double(colorIndex) // 计算每次颜色变化的延迟
//                    
//                    DispatchQueue.main.asyncAfter(deadline: .now() + colorChangeDelay) {
//                        withAnimation(.linear(duration: colorChangeInterval)) {
//                            // 如果使用不同的颜色，选择对应的颜色或最后一个颜色
//                            if useDifferentColors {
//                                currentColors[index] = colors[index % colors.count] // 改变颜色
//                            } else {
//                                currentColors[index] = colors.first ?? .black // 统一颜色
//                            }
//                           
//                        }
//                    }
//                }
//            }
//
//            // 向上移动动画
//            withAnimation(Animation.easeInOut(duration: animationDuration).delay(delay)) {
//                offsets[index] = -offsetAmount // 向上移动指定的偏移量
//            }
//
//            // 立即开始返回到初始位置的动画
//            DispatchQueue.main.asyncAfter(deadline: .now() + animationDuration + delay) {
//                withAnimation(Animation.easeInOut(duration: animationDuration)) {
//                    offsets[index] = 0 // 立即返回到初始位置
//                }
//
//                // 如果是最后一个字母，重置动画并暂停 1 秒后重新开始（如果 shouldLoop 为 true）
//                if index == offsets.count - 1 && shouldLoop {
//                    DispatchQueue.main.asyncAfter(deadline: .now() + animationDuration) {
//                        // 暂停 1 秒
//                        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
//                            resetAnimation() // 动画完成后重新开始
//                        }
//                    }
//                }
//            }
//        }
//    }
//
//    private func resetAnimation() {
//        // 重置动画并重新开始
//        offsets = Array(repeating: 0, count: letters.count)
//        currentColors = Array(repeating: colors.first ?? .black, count: letters.count) // 重置颜色
//        startAnimation()
//    }
//}

struct TextUi: View {
    var body: some View {
       
        
        
        
        
    //AnimationMulticolorView()
        
        AnimationGradientViews()
    }
}

#Preview {
    TextUi()
}
